Three-dimensional character animation requires significant storage requirements. To animate a single 3D character (or generally any model) over some interval of time typically requires storing the position of the character at the time of each frame, in order to be able to render the frame. Complex animation sequences can involve hundreds of characters. For example, an animation sequence of a crowd containing 200 different animation cycles would require the storage of the complete position information for each of the 200 characters, for each frame of their respective animation cycles. A typical character cycle may contain thousands of points and hundreds of frames of animation, and the storage requirements for a lengthy cycle can easily reach hundreds of megabytes of storage. Over the course of a feature length animation, these storage requirements quickly mushroom and can easily reach terabytes of storage.
Accordingly, it is desirable to provide a way of compressing character information in animation sequences to reduce storage requirements for character models, and thus by extension, reduces the storage needed for crowds or other complex animation sequences.